package httputil

//
// JsonResult 后端返回给前端的 Json 数据封装
//
type JsonResult struct {
	Code int         `json:"code"` // 自定义消息码
	Msg  string      `json:"msg"`  // 消息提示
	Data interface{} `json:"data"` // 附加数据: 比如查询操作查询到的结果集就可以附加到这个数据字段上
}

//
// NewJsonResult
// @parameter code
// @parameter msg
// @parameter data
//
func NewJsonResult(code int, msg string, data interface{}) *JsonResult {
	return &JsonResult{Code: code, Msg: msg, Data: data}
}

//
// WithCode 提供一种自定义消息码的方法
// @parameter code 自定义消息码
//
func (r *JsonResult) WithCode(code int) *JsonResult {
	r.Code = code
	return r
}

//
// WithMsg 提供一个自定义消息提示信息的方法
// @parameter msg 要添加的自定义消息提示
//
func (r *JsonResult) WithMsg(msg string) *JsonResult {
	r.Msg = msg
	return r
}

//
// WithData 在 JsonResult 对象上添加附加数据
// @parameter data 要添加附加数据
//
func (r *JsonResult) WithData(data interface{}) *JsonResult {
	r.Data = data
	return r
}

